<?php
//Ultima verificacion: 09-03-2015
class ContenidoEducativo extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo agrega un contenido educativo a una clase en el formulario CREAR CLASE. La respuesta se muestra en un tabla dentro del formulario para crear clases.
	//El hash se usa para identificar a que clase se le esta agregando el contenido ya que todavia no fue creada.
	function agregarEtapa1($hash=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el hash de la clase padre. Ademas que se haya pasado por post el nombre del contenido a crear.
			if($hash != "" && strlen($hash) == 20 && $this->input->post('nombreContenidoEducativo',true)!=""){
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$datos['hashSel'] = $hash;
				
				//Cargo el modelo donde estan los datos de los archivos
				$this->load->model('m_archivo');
				
				//Detalles de las configuraciones del archivo a subir
				$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos";
				$config['allowed_types'] = 'gif|jpg|png|jpeg|doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
				$config['max_size'] = '10000';
				$this->load->library('upload', $config);
				
				$ultimoIdInsertado = 0;
				$archivo = '';
				//Si no se subio el archivo hacer lo siguiente
				if (!$this->upload->do_upload('archivo')){
					$mensaje = 'No se ha subido ning\u00fan archivo o su archivo est\u00e1 fuera de las especificaciones.';
				//Si se subio el archivo hacer lo siguiente
				}else{
					//Datos del archivo subido
					$upload_data = $this->upload->data();
					$archivo = $upload_data['file_name'];
					$extensionArchivo = $upload_data['file_ext'];
					
					//Mensaje que se va a mostrar
					$mensaje = 'Se ha subido el archivo correctamente.';
					
					// Determine Content Type
					switch ($upload_data['file_ext']){
					  case ".pdf": $ctype="application/pdf"; break;
					  case ".exe": $ctype="application/octet-stream"; break;
					  case ".zip": $ctype="application/zip"; break;
					  case ".doc": $ctype="application/msword"; break;
					  case ".xls": $ctype="application/vnd.ms-excel"; break;
					  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break;
					  case ".gif": $ctype="image/gif"; break;
					  case ".png": $ctype="image/png"; break;
					  case ".jpeg":
					  case ".jpg": $ctype="image/jpg"; break;
					  default: $ctype="application/force-download";
					}
					
					//Creamos el archivo en la base de datos
					$resultado = $this->m_archivo->crear(random_string('alnum',20).$upload_data['file_ext'], $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
					$ultimoIdInsertado = $this->db->insert_id();
				}
				
				//Cargo el modelo donde estan los datos de los contenidos educativos
				$this->load->model('m_contenido_educativo');
				
				//Creamos el contenido con estado -2, es decir, parcialmente creado.
				$resultado = $this->m_contenido_educativo->crearEtapa1($hash, $this->session->userdata('idPersonaLog'), $this->input->post('nombreContenidoEducativo',true), $this->input->post('descripcionContenidoEducativo',true), $ultimoIdInsertado, 1, -2, $this->session->userdata('idUsuarioLog'));
				
				if($resultado == 1){
					echo("<script> alert('El contenido educativo: ".$this->input->post('nombreContenidoEducativo',true)." se ha creado correctamente. ".$mensaje."');</script>");
					echo("<script> window.parent.actualizarContenidoEducativo('".base_url() .'contenidoEducativo/actualizarEtapa1/'.$hash."');</script>");
				}else{
					echo("<script> alert('El contenido educativo: ".$this->input->post('nombreContenidoEducativo',true)." no se ha creado. Ha habido un error.');</script>");
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo actualiza la tabla de contenidos educativos de una clase en el formulario CREAR CLASE. La respuesta se muestra en un tabla dentro del formulario para crear clases.
	function actualizarEtapa1($hash=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el hash de la clase padre.
			if($hash != "" && strlen($hash) == 20){
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$datos['hashSel'] = $hash;
				
				//Cargo el modelo donde estan los datos de los contenidos educativos
				$this->load->model('m_contenido_educativo');
				
				//Busco todos los contenidos educativos activos
				$listadoContenidosEducativos = $this->m_contenido_educativo->buscarActivosEtapa1(" AND contenidoeducativo.hash='".$hash."'");
				
				//Le paso el listado de todos los contenidos educativos a la vista para que los muestre en una tabla
				$datos['contenidosEducativos'] = $listadoContenidosEducativos;
				
				//Cargo la vista donde se arma la tabla
				$this->load->view('v_contenidos_educativos_table1',$datos);						
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el contenido educativo pasado por la url en el formulario CREAR CLASE
	//El segundo parametro sirve para filtrar los contenidos educativos en el resultado
	function eliminarEtapa1($idContenidoEducativo=null, $hash=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idContenidoEducativo pasado sea numerico y mayor que cero. Ademas que el hash pasado sea alfanumerico y de 20 caracteres de longitud.
			if(is_numeric($idContenidoEducativo) && $idContenidoEducativo>0 && $hash != "" && strlen($hash) == 20){
				//Cargo el modelo donde estan los datos de los contenidos educativos registrados
				$this->load->model('m_contenido_educativo');
				
				//Busco al contenido educativo para corroborar que exista
				$contenidoEducativo = $this->m_contenido_educativo->get2($idContenidoEducativo);
				
				//Tercera comprobacion: Que el contenido educativo exista y que haya sido creado por la persona logueada.
				if($contenidoEducativo->num_rows() == 1 && $contenidoEducativo->row()->idPersona == $this->session->userdata('idPersonaLog')){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$datos['hashSel'] = $hash;
					
					//Cargo el modelo donde estan los datos de los contenidos educativos
					$this->load->model('m_contenido_educativo');
					
					//Elimino al contenido pasado por la url
					$respuesta = $this->m_contenido_educativo->eliminar($idContenidoEducativo, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los contenidos educativos activos que quedaron
					$listadoContenidosEducativos = $this->m_contenido_educativo->buscarActivosEtapa1(" AND contenidoeducativo.hash='".$hash."'");
					
					//Le paso el listado de todos los contenidos educativos a la vista para que las muestre en una tabla
					$datos['contenidosEducativos'] = $listadoContenidosEducativos;
					
					//Cargo la vista donde se arma la tabla
					$this->load->view('v_contenidos_educativos_table1',$datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No se ha pasado los parametros necesarios para borrar un registro. 1");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro. 2");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo agrega un contenido educativo a una clase en el formulario MODIFICAR CLASE. La respuesta se muestra en una tabla dentro del formulario para modificar clases
	function agregarEtapa2($idClase=null, $idCicloLectivo=null, $idAsignatura=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el id de la clase a agregarle el contenido y que sea numerico y mayor que cero. Lo mismo para idCicloLectivo e idAsignatura.
			//Ademas que se haya pasado por post el nombre del contenido a crear.
			if(is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0 && $this->input->post('nombreContenidoEducativo',true)!=""){
				//Cargo el modelo donde estan los datos de las clases
				$this->load->model('m_clase');
				
				//Busco a la clase para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura y clase
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que la clase pasada por la url sea existente. Lo mismo para el ciclo y la asignatura. Ademas que haya sea dictada por la persona logueada
				if($clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los archivos
					$this->load->model('m_archivo');
					
					//Detalles de las configuraciones del archivo a subir
					$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos";
					$config['allowed_types'] = 'gif|jpg|png|jpeg|doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
					$config['max_size'] = '10000';
					$this->load->library('upload', $config);
					
					$ultimoIdInsertado = 0;
					$archivo = '';
					//Si no se subio el archivo hacer lo siguiente
					if (!$this->upload->do_upload('archivo')){
						$mensaje = 'No se ha subido ning\u00fan archivo o su archivo est\u00e1 fuera de las especificaciones.';
					//Si se subio el archivo hacer lo siguiente
					}else{
						//Datos del archivo subido
						$upload_data = $this->upload->data();
						$archivo = $upload_data['file_name'];
						$extensionArchivo = $upload_data['file_ext'];
						
						//Mensaje que se va a mostrar
						$mensaje = 'Se ha subido el archivo correctamente.';
						
						// Determine Content Type
						switch ($upload_data['file_ext']){
						  case ".pdf": $ctype="application/pdf"; break;
						  case ".exe": $ctype="application/octet-stream"; break;
						  case ".zip": $ctype="application/zip"; break;
						  case ".doc": $ctype="application/msword"; break;
						  case ".xls": $ctype="application/vnd.ms-excel"; break;
						  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break;
						  case ".gif": $ctype="image/gif"; break;
						  case ".png": $ctype="image/png"; break;
						  case ".jpeg":
						  case ".jpg": $ctype="image/jpg"; break;
						  default: $ctype="application/force-download";
						}
						
						//Creamos el archivo en la base de datos
						$resultado = $this->m_archivo->crear(random_string('alnum',20).$upload_data['file_ext'], $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
						$ultimoIdInsertado = $this->db->insert_id();
					}
									
					//Cargo el modelo donde estan los datos de los contenidos educativos
					$this->load->model('m_contenido_educativo');
					
					//Creamos el contenido con estado 1
					$resultado = $this->m_contenido_educativo->crearEtapa2($idClase, $this->session->userdata('idPersonaLog'), $this->input->post('nombreContenidoEducativo',true), $this->input->post('descripcionContenidoEducativo',true), $ultimoIdInsertado, 1, 1, $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){
						$ultimoIdInsertado = $this->db->insert_id();						
						
						//Cargo el modelo donde estan los datos del timeline para cargar la novedad.
						$this->load->model('m_timeline');
												
						//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
						$this->m_timeline->crear(1, 6, $ultimoIdInsertado, 11, $asignatura->row()->idDivision, date("Y-m-d H:i:s"), null, 1);
						
						echo("<script> alert('El contenido educativo: ".$this->input->post('nombreContenidoEducativo',true)." se ha creado correctamente. ".$mensaje."');</script>");
						echo("<script> window.parent.actualizarContenidoEducativo('".base_url() .'contenidoEducativo/actualizarEtapa2/'.$idClase.'/'.$idCicloLectivo.'/'.$idAsignatura."');</script>");
					}else{
						echo("<script> alert('El contenido educativo: ".$this->input->post('nombreContenidoEducativo',true)." no se ha creado. Ha habido un error.');</script>");
					}
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo actualiza la tabla de contenidos educativos de una clase en el formulario MODIFICAR CLASE. La respuesta se muestra en un tabla dentro del formulario para modificar clases.
	function actualizarEtapa2($idClase=null, $idCicloLectivo=null, $idAsignatura=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el id de la clase padre. Tambien el ciclo y la asignatura para poder volver a la pantalla correcta si apretas modificar contenido educativo.
			if(is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0){
				//Cargo el modelo donde estan los datos de las clases
				$this->load->model('m_clase');
				
				//Busco a la clase para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura y clase
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que la clase pasada por la url sea existente. Lo mismo para el ciclo y la asignatura. Ademas que sea dictada por la persona logueada
				if($clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$datos['idClaseSel'] = $idClase;
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Cargo el modelo donde estan los datos de los contenidos educativos
					$this->load->model('m_contenido_educativo');
					
					//Busco todos los contenidos educativos activos
					$listadoContenidosEducativos = $this->m_contenido_educativo->buscarActivosEtapa2(" AND contenidoeducativo.idClase='".$idClase."'");
					
					//Le paso el listado de todos los contenidos educativos a la vista para que las muestre en una tabla
					$datos['contenidosEducativos'] = $listadoContenidosEducativos;
					
					//Cargo la vista donde se arma la tabla
					$this->load->view('v_contenidos_educativos_table2',$datos);
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el contenido educativo pasado por la url en el formulario MODIFICAR CLASE
	//El segundo, tercer y cuarto parametro indican el criterios para filtrar los contenidos en el resultado en el resultado
	function eliminarEtapa2($idContenidoEducativo=null, $idClase=null, $idCicloLectivo=null, $idAsignatura=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idContenidoEducativo pasado sea numerico y mayor que cero. Ademas que idClase, idCicloLectivo e idAsignatura pasados sean numerico y mayor que cero.
			if(is_numeric($idContenidoEducativo) && $idContenidoEducativo>0 && is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0){
				//Cargo el modelo donde estan los datos de los contenidos educativos
				$this->load->model('m_contenido_educativo');
				
				//Busco al contenido para comprobar que exista
				$contenidoEducativo = $this->m_contenido_educativo->get($idContenidoEducativo);
				
				//Cargo el modelo donde estan los datos de las clases
				$this->load->model('m_clase');
				
				//Busco a la clase para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura, clase y contendo
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				if($contenidoEducativo->num_rows() == 1){
					$restriccion2 .= " AND asignatura.idAsignatura=".$contenidoEducativo->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el contenido sea existente. Lo mismo para el resto. Que el contenido educativo haya sido cargado por la persona logueada.
				if($contenidoEducativo->num_rows() == 1 && $clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$datos['idClaseSel'] = $idClase;
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Cargo el modelo donde estan los datos de los contenidos educativos
					$this->load->model('m_contenido_educativo');
					
					//Elimino al contenido pasado por la url
					$respuesta = $this->m_contenido_educativo->eliminar($idContenidoEducativo, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los contenidos educativos activos que quedaron
					$listadoContenidosEducativos = $this->m_contenido_educativo->buscarActivosEtapa2(" AND contenidoeducativo.idClase='".$idClase."'");
					
					//Le paso el listado de todos los contenidos educativos a la vista para que las muestre en una tabla
					$datos['contenidosEducativos'] = $listadoContenidosEducativos;
					
					//Cargo la vista donde se arma la tabla
					$this->load->view('v_contenidos_educativos_table2',$datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos del contenido pasado por la url.
	//El segundo, tercer y cuarto parametro se utiliza para volver a la pantalla anterior.
	function abrirPantallaModificar($idContenidoEducativo=null, $idClase=null, $idCicloLectivo=null, $idAsignatura=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idContenidoEducativo pasado sea numerico y mayor que cero. Ademas que idClase, idCicloLectivo e idAsignatura pasado sean numericos y mayor que cero.
			if(is_numeric($idContenidoEducativo) && $idContenidoEducativo>0 && is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0){
				//Cargo el modelo donde estan los datos de los contenidos educativos registrados
				$this->load->model('m_contenido_educativo');
				
				//Busco al contenido educativo que hay que modificar para comprobar que existe
				$contenidoEducativo = $this->m_contenido_educativo->get($idContenidoEducativo);
				
				//Cargo el modelo donde estan los datos de las clases registradas
				$this->load->model('m_clase');
				
				//Busco a la clase que para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				if($contenidoEducativo->num_rows() == 1){
					$restriccion2 .= " AND asignatura.idAsignatura=".$contenidoEducativo->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el contenido eduactivo sea existente. Ademas que la clase, ciclo e asignatura sean existente tmb. Que la clase y contenido sean dictados por el docente logueado.
				if($contenidoEducativo->num_rows() == 1 && $clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Le paso el contenido a modificar a la vista
					$datos['contenidoEducativoSel'] = $contenidoEducativo;
					
					//Le paso la clase padre del contenido educativo y otros datos.
					$datos['idClaseSel'] = $idClase;
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Busco al contenido siguiente del que hay que modificar
					$idContenidoEducativoSig = $this->m_contenido_educativo->getContiguo($idContenidoEducativo,1, $idClase);
					
					//Le paso el contenido siguiente del que hay que modificar a la vista
					$datos['idContenidoEducativoSig'] = $idContenidoEducativoSig;
					
					//Busco al contenido anterior del que hay que modificar
					$idContenidoEducativoAnt = $this->m_contenido_educativo->getContiguo($idContenidoEducativo,-1, $idClase);
					
					//Le paso la contenido anterior de la que hay que modificar a la vista
					$datos['idContenidoEducativoAnt'] = $idContenidoEducativoAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo la vista donde se muestra el formulario para modificar un contenido educativo y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_contenidos_educativos_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de un contenido educativo
	function modificar($idContenidoEducativo=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el id del contenido a modificar.
			//Ademas que se haya pasado por post el nombre y el estado del contenido a modificar.
			if(is_numeric($idContenidoEducativo) && $idContenidoEducativo>0 && $this->input->post('nombre',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los contenidos educativos
				$this->load->model('m_contenido_educativo');
				
				//Busco al contenido que hay que modificar para comprobar que existe
				$contenidoEducativo = $this->m_contenido_educativo->get($idContenidoEducativo);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asginatura y contenido
				$restriccion2 = "";
				if($contenidoEducativo->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$contenidoEducativo->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el contenido educativo pasado por la url sea existente. Que haya sido creado por la persona logueada.
				if($contenidoEducativo->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Guardamos el id del archivo actual. Cero si no tiene asignado ninguno
					$idArchivoActual = $contenidoEducativo->row()->idArchivo;
					
					//Resultado 0 quiere decir que nada se ha modificado
					$resultado = 0;
					
					//Cargo el modelo donde estan los datos de los archivos
					$this->load->model('m_archivo');
					
					//Detalles de las configuraciones del archivo a subir
					$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos";
					$config['allowed_types'] = 'gif|jpg|png|jpeg|doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
					$config['max_size'] = '10000';
					$this->load->library('upload', $config);
					
					$archivo = '';
					//Si no se subio el archivo hacer lo siguiente
					if (!$this->upload->do_upload('archivo')){
						$mensaje = 'No se ha subido ning\u00fan archivo o su archivo est\u00e1 fuera de las especificaciones.';
					//Si se subio el archivo hacer lo siguiente
					}else{
						//Datos del archivo subido
						$upload_data = $this->upload->data();
						$archivo = $upload_data['file_name'];
						$extensionArchivo = $upload_data['file_ext'];
						
						//Mensaje que se va a mostrar
						$mensaje = 'Se ha subido el archivo correctamente.';
						
						// Determine Content Type
						switch ($upload_data['file_ext']) {
						  case ".pdf": $ctype="application/pdf"; break; 
						  case ".exe": $ctype="application/octet-stream"; break; 
						  case ".zip": $ctype="application/zip"; break; 
						  case ".doc": $ctype="application/msword"; break; 
						  case ".xls": $ctype="application/vnd.ms-excel"; break; 
						  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break; 
						  case ".gif": $ctype="image/gif"; break; 
						  case ".png": $ctype="image/png"; break; 
						  case ".jpeg": 
						  case ".jpg": $ctype="image/jpg"; break; 
						  default: $ctype="application/force-download"; 
						}
						
						//Si ya tenia archivo lo modificamos, si no tenia, creamos un nuevo registro en la base de datos
						$nuevoHash = random_string('alnum',20).$upload_data['file_ext'];
																		
						if($idArchivoActual != 0){
							//Modificamos el archivo en la base de datos
							$resultado += $this->m_archivo->modificar($idArchivoActual, $nuevoHash, $upload_data['file_name'], $upload_data['file_ext'], $ctype);
						}else{
							//Creamos el archivo en la base de datos
							$resultado += $this->m_archivo->crear($nuevoHash, $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/contenidosEducativos", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
							$idArchivoActual = $this->db->insert_id();
						}
					}
										
					//Modificamos el contenido educativo
					$resultado += $this->m_contenido_educativo->modificar($idContenidoEducativo, $this->input->post('nombre',true), $this->input->post('descripcion',true), $idArchivoActual, $this->input->post('estado',true));
					
					if($archivo != '')	echo("<script> window.parent.actualizarArchivo('".base_url() .'archivo/hash/'.$nuevoHash."');</script>");
					
					if($resultado >= 1){
						//Cargo el modelo donde estan los datos del timeline para cargar la novedad.
						$this->load->model('m_timeline');
												
						//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
						$this->m_timeline->crear(2, 6, $idContenidoEducativo, 11, $contenidoEducativo->row()->idDivision, date("Y-m-d H:i:s"), null, 1);						
						
						echo("<script> alert('El contenido educativo: ".$this->input->post('nombre',true)." se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El contenido educativo: ".$this->input->post('nombre',true)." no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
}